package delphorm.entite.questionnaire;

public class FiltreNumerique implements Filtre {
	private Character type;
	private Double minimum;
	private Double maximum;
	private String messageAide;
	private Boolean facultative;
	private Long id;
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Boolean getFacultative() {
		return facultative;
	}

	public void setFacultative(Boolean facultative) {
		this.facultative = facultative;
	}

	public void setMessageAide(String messageAide) {
		this.messageAide = messageAide;
	}

	public Double getMaximum() {
		return maximum;
	}

	public void setMaximum(Double maximum) {
		this.maximum = maximum;
	}

	public Double getMinimum() {
		return minimum;
	}

	public void setMinimum(Double minimum) {
		this.minimum = minimum;
	}

	public Character getType() {
		return type;
	}

	public void setType(Character type) {
		this.type = type;
	}

	public boolean Check(Valeur valeur) {
		ValeurNumerique valeurNumerique = (ValeurNumerique)valeur;
		
		if(valeurNumerique.getValeur() == null && facultative.booleanValue() == true)
			return true;
		if(valeurNumerique.getValeur() == null && facultative.booleanValue() == false)
			return false;
		if(minimum.doubleValue() > valeurNumerique.getValeur().doubleValue())
			return false;
		if(maximum.doubleValue() < valeurNumerique.getValeur().doubleValue())
			return false;
		if(!estEntier(valeurNumerique.getValeur()))
			return false;
		return true;		
	}
	
	public boolean estEntier(Double d)
	{
		boolean res = true;
		String s =  d.toString();
		String[] ss = s.split("E");
		if(ss.length ==2)
		{
			Integer exp = new Integer(ss[1]);
			String[] sss = ss[0].split("\\.");
			if(sss[1].length() != exp.intValue())
				res = false;
		}
		else
		{
			String[] sss = s.split("\\.");
			if(!sss[1].matches("0+"))
				res=false;
		}
		return res;
	}

	public String getMessageAide() {
		return messageAide;
	}

}
